package ve.edu.ucla.laboratorio.dals;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import ve.edu.ucla.laboratorio.dals.actividades.Logueo;
import ve.edu.ucla.laboratorio.dals.modelo.Autenticacion;
import ve.edu.ucla.laboratorio.dals.modelo.EstadoAutenticacion;
import ve.edu.ucla.laboratorio.dals.modelo.Preferencias;
import ve.edu.ucla.laboratorio.dals.modelo.RepositorioDatos;
import ve.edu.ucla.laboratorio.dals.modelo.RepositorioUsuarios;
import ve.edu.ucla.laboratorio.dals.modelo.prueba.EjemploRepositorioDatos;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class Utilidades {
	private static Object dato;
	
	public static String convertirMD5(String mensaje) {
		try {
			MessageDigest algoritmo = MessageDigest.getInstance("MD5");
			byte[] md5 = algoritmo.digest(mensaje.getBytes("UTF-8"));
			return convertirHex(md5);
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("No deberia ocurrir.");
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException("No deberia ocurrir.");
		}
	}

	public static String convertirHex(byte[] datos) {
		String res = "";
		for (byte b : datos) res += Integer.toHexString(b);
		return res;
	}
	
	public static String obtenerTexto(Activity actividad, int control) {
		return ((TextView) actividad.findViewById(control)).getText().toString();
	}
	
	public static void asignarTexto(Activity actividad, int control, String texto) {
		((TextView) actividad.findViewById(control)).setText(texto);
	}
	
	public static String obtenerTexto(View vista, int control) {
		return ((TextView) vista.findViewById(control)).getText().toString();
	}
	
	public static void asignarTexto(View vista, int control, String texto) {
		((TextView) vista.findViewById(control)).setText(texto);
	}
	
	public static void mostrarMensaje(Activity actividad, String mensaje) {
		Toast.makeText(actividad, mensaje, Toast.LENGTH_LONG).show();
	}

	public static void iniciarActividad(Activity actividad,
			Class<?> actividadMostrar) {
		actividad.startActivity(new Intent().setClass(actividad, actividadMostrar));
	}
	
	public static Object obtenerDatoGlobal() {
		return dato;
	}

	public static void asignarDatoGlobal(Object nuevo) {
		dato = nuevo;
	}
	
	public static void futuro(final Handler manejador, final int tiempoMilis, final Runnable accion) {
		Runnable runnable = new Runnable() {
			public void run() {
				try {
						Thread.sleep(tiempoMilis);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				manejador.post(accion);
			}
		};
		new Thread(runnable).start();
	}

	public static RepositorioDatos crearRepositorioDatos(
			Preferencias preferencias, Context contexto) {
		return new EjemploRepositorioDatos(contexto);
	}
}
